package asem.ast.sentencias;

import java.util.LinkedList;

import alex.Token;
import asem.TablaSimbolos;
import asem.tablaSimbolos.Clase;
import asem.tablaSimbolos.Metodo;
import asem.tablaSimbolos.tipo.Tipo;

public class NodoDeclaracion extends NodoSentencia {
	protected Tipo tipo;
	protected LinkedList<Token> conjuntoVars;

	public NodoDeclaracion(Tipo t, LinkedList<Token> lista) {
		tipo = t;
		conjuntoVars = lista;
	}

	public void chequeoSentencias() 
	{
			TablaSimbolos tabla = TablaSimbolos.getInstance();
			Metodo metodoActual = tabla.metodoActual();
			if (metodoActual.getVariablesLocales().get(conjuntoVars.getFirst().getLexema()) != null)
			{
				// la declaracion es en un metodo
				for(Token tok: conjuntoVars)
				{
					tipo.compatibilidadDeTipos(metodoActual.getVariablesLocales().get(tok.getLexema()).getTipo());
				}
			}
			else
			{
				Clase claseActual = tabla.claseActual();
				if (claseActual.getAtributosDeInstancia().get(conjuntoVars.getFirst().getLexema()) != null)
				{
					for(Token tok: conjuntoVars)
					{
						tipo.compatibilidadDeTipos(claseActual.getAtributosDeInstancia().get(tok.getLexema()).getTipo());
					}
				}
			}
				
			
	}
}
